home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / comt010d.zip / COMTSRC.ZIP / ENCA.ASM < prev    next >
Assembly Source File  |  1991-11-16  |  2KB  |  135 lines

  1. .model tiny,C
  2.  
  3. maxline = 32
  4. umaxline = 63/4
  5. .data?
  6.   in_line db ?
  7.   sendz   db ?
  8.  
  9.  
  10. .code
  11.  
  12. nencode_block proc
  13. public nencode_block
  14.        arg to:word, from:word, len:word
  15.        mov cx,len
  16.        or cx,cx
  17.        jz ClearLine
  18.        push si
  19.        push di
  20.        cld
  21.        mov ax,ds
  22.        mov es,ax
  23.        mov di,to
  24.        mov si,from
  25.        mov dl,in_line
  26. Top:
  27.        lodsb
  28.        mov ah,al
  29.        and ax,0f00fh
  30.        shr ah,1
  31.        shr ah,1
  32.        shr ah,1
  33.        shr ah,1
  34.        add ax,'AA'
  35.        stosw
  36.        inc dl
  37.        cmp dl,maxline
  38.        ja putCRLF
  39.        loop Top
  40. Return:
  41.        mov in_line,dl
  42.        sub di,to
  43.        mov ax,di
  44.        pop di
  45.        pop si
  46.        ret
  47. putCRLF:
  48.        xor dx,dx
  49.        mov al,0ah
  50.        stosb
  51.        loop Top
  52.        jmp Return
  53. ClearLine:
  54.        mov in_line,0
  55.        xor ax,ax
  56.        ret
  57. nencode_block endp
  58.  
  59. CodeTop = 34
  60.  
  61. uuencode_block proc
  62. public uuencode_block
  63.        arg to:word, from:word, len:word
  64.        mov cx,len
  65.        or cx,cx
  66.        jz uClearLine
  67.        push si
  68.        push di
  69.        cld
  70.        mov ax,ds
  71.        mov es,ax
  72.        mov di,to
  73.        mov si,from
  74.        cmp sendz,0
  75.        jz Nosend
  76.        mov al,'z'
  77.        stosb
  78.        mov sendz,0
  79. Nosend:
  80. uTop:
  81.        xor bl,bl
  82.        clc
  83.        mov dh,[si+2]
  84.        rcr dh,1
  85.        rcl bl,1
  86.        rcr dh,1
  87.        rcl bl,1
  88.                       ; Carry clear now
  89.        mov dl,[si+1]
  90.        rcr dl,1
  91.        rcl bl,1
  92.        rcr dl,1
  93.        rcl bl,1
  94.        lodsb
  95.        rcr al,1
  96.        rcl bl,1
  97.        rcr al,1
  98.        rcl bl,1
  99.        mov bh,al
  100.        inc si
  101.        inc si
  102.  
  103.        add bx,'""'
  104.        add dx,'""'
  105.        mov [di],bx
  106.        mov [di+2],dx
  107.        add di,4
  108.  
  109.        inc in_line
  110.        cmp in_line,umaxline
  111.        ja uputCRLF
  112.        loop uTop
  113. uReturn:
  114.        sub di,to
  115.        mov ax,di
  116.        pop di
  117.        pop si
  118.        ret
  119. uputCRLF:
  120.        mov in_line,0
  121.        mov ax,0ah
  122.        stosb
  123.        mov al,'z'
  124.        stosb
  125.        loop uTop
  126.        jmp uReturn
  127. uClearLine:
  128.        mov in_line,0
  129.        mov sendz,1
  130.        xor ax,ax
  131.        ret
  132. uuencode_block endp
  133.  
  134.        end
  135.